home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / res / administration / std / resourceConfig.php < prev    next >
PHP Script  |  2010-05-19  |  12KB  |  247 lines

  1. <?php
  2. /**
  3.  * Resource configuration base script
  4.  *
  5.  * - Verify access rights to resource configuration
  6.  * - Load resource configuration file into an array ($resourceData)
  7.  * - prepare HTML page (Head, body, css...)
  8.  * - include resource configuration php script
  9.  *
  10.  * This script is either included by accounts.php (if accessed from a browser) or directly called by embeded browser of application
  11.  *
  12.  * PHP version 5
  13.  *
  14.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  15.  * that is available through the world-wide-web at the following URI:
  16.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  17.  * the PHP License and are unable to obtain it through the web, please
  18.  * send a note to license@php.net so we can mail you a copy immediately.
  19.  *
  20.  * @category   NA
  21.  * @package    NA
  22.  * @author     Nicolas Bruley / Peer 2 World <contact@weezo.net>
  23.  * @copyright  2005-2009 Nicolas Bruley / Peer 2 World
  24.  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  25.  * @version    CVS: $Id:$
  26.  * @link       http://www.weezo.net
  27.  * @since      File available since Release 1.0.0
  28.  */
  29.  
  30. require_once(INCLUDE_DIR.'outputFunctions.php');
  31. require_once(INCLUDE_DIR.'resourceConfigFunctions.php');
  32.  
  33. // Resource data directory (as cfAppResourceDir() function doesn't work properly in administration context
  34. $resourceDataDir;
  35.  
  36. /*
  37.  * Verify access rights
  38.  */
  39. if($_SERVER['REMOTE_ADDR']!='127.0.0.1'){
  40.     if(cfUGetVar('administrator')!=true || !cfGGetVar('remoteAdministrationAuthorized')) outDisplayErrorPage(cfcaption('errorRemoteAdministrationNotAuthorized'));
  41. }
  42.  
  43. /**************************************************************************************************
  44.  * Advanced configuration
  45.  **************************************************************************************************/
  46. if((isset($_GET['resourceConfigFilename']) && $_GET['resourceConfigFilename']=='advancedConfig') || (isset($_POST['resourceConfigFilename']) && $_POST['resourceConfigFilename']=='advancedConfig')){
  47.     $_ENV['configurationEnvironment']='application';
  48.     $fileName='advancedConfig';
  49.     cfInsertHEAD(false);
  50.     echo '<meta title="'.cfCaption('configAdvanced').'">'."\n";
  51.     echo '<meta icon="configAdvanced">'."\n";
  52.     echo "</head><body>\n";
  53.     echo cfScriptLink('wz_dragdrop.js');
  54.     $_ENV['buttonLessConfig']=false;
  55.     require('advancedConfig.php');
  56.     exit;
  57. }
  58.  
  59.  
  60.  
  61. /**************************************************************************************************
  62.  * Resource configuration
  63.  **************************************************************************************************/
  64. if(isset($_GET['config']) || isset($_GET['resourceConfigFilename']) || isset($_POST['config']) || isset($_POST['resourceConfigFilename']) || (isset($_SESSION['activeResourceId']) && cfRGetVar('configuringResource'))) {
  65.  
  66.     // Configuration called from web browser
  67.     if(isset($_GET['config']) || isset($_POST['config']) || (isset($_SESSION['activeResourceId']) && cfRGetVar('configuringResource'))) {
  68.         $_ENV['configurationEnvironment']='browser';
  69.         if(isset($_GET['config'])) $fileName=$_GET['config'];
  70.         elseif(isset($_POST['config'])) $fileName=$_POST['config'];
  71.         else $fileName=cfRGetVar('configuringResource');
  72.     }
  73.     // Configuration called from IU resource tab
  74.     if(isset($_GET['resourceConfigFilename']) || isset($_POST['resourceConfigFilename'])) {
  75.         $_ENV['configurationEnvironment']='application';
  76.         if(isset($_GET['resourceConfigFilename'])) $fileName=$_GET['resourceConfigFilename']; else $fileName=$_POST['resourceConfigFilename'];
  77.         $_ENV['resourceConfigFilename']=$fileName;
  78.     }
  79.  
  80.     // Buttonless config
  81.     $_ENV['buttonLessConfig']=cfIsInApp();
  82.  
  83.     // Check and parse resource configuration file
  84.     if(!($resId=array_search($fileName,cfMGetVar('weezoResourcesList'))) || !($resourceData=cfMGetVar('weezoResData'.$resId)) || (!isset($resourceData['type']) || !isset($resourceData['subType']) || !isset($resourceData['name']))) {
  85.         // If problem reading configuration file
  86.         echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML><HEAD>';
  87.         echo '<meta http-equiv="content-type" content="text/html; charset=utf-8"><TITLE></TITLE>'."\n";
  88.  
  89.         if(file_exists(cfAppDataDir().'/general.ini') && ($applicationIni=cfParse_ini_file(cfAppDataDir().'/general.ini')) && isset($applicationIni['skin'])){
  90.             echo '<link rel="stylesheet" type="text/css" href="/themes/skins/'.$applicationIni['skin'].'/theme.css">'."\n";
  91.         }
  92.         echo "</HEAD>\n";
  93.         outDisplayErrorPage(cfCaption('adminResourceBadCfgFile'),cfCaption('genError'),true);
  94.         exit();
  95.     }
  96.     $_ENV['resourceDirectory']=cfAppDataDir().'/res/'.$resourceData['type'].'/'.$resourceData['subType'].'/'.cfFileWithoutExtension($fileName);
  97.     // Store read resource data to check wether it has changed or not when saving with rcWriteResourceFile ($originalResourceData passed as global var)
  98.     $originalResourceData=$resourceData;
  99.  
  100.     // resource configuration file OK
  101.     $standaloneConfig=false; // $standaloneConfig is true if configuration script doesn't need (want...) to be wrapped in common HTML stuff. $standaloneConfig is red from describer file (see below)
  102.     $configStartsSession=false; // $configStartsSession is true if config script does "wSession_start()". $configStartsSession is red from describer file (see below)
  103.  
  104.     // check for descriptor file
  105.     $resourceDefinition=cfMGetVar('weezoResourceDefinition'.strtolower($resourceData['type'].$resourceData['subType']));
  106.     if(isset($resourceDefinition['describer'])) {
  107.         $describerData=$resourceDefinition['describer'];
  108.         if(@$describerData['standaloneConfig'] && @$describerData['configFile']) $standaloneConfig=true;
  109.         if(@$describerData['configStartsSession']) $configStartsSession=true;
  110.     }
  111.     // Set resource data directory
  112.     $resourceDataDir=cfAppDataDir().'/res/'.$resourceData['type'].'/'.$resourceData['subType'].'/'.cfFileWithoutExtension($fileName);
  113.  
  114.     /**************************************************************************************************
  115.      * Standalone configuration: redirect
  116.      **************************************************************************************************/
  117.     if($standaloneConfig) {
  118.         // Seek config script
  119.         $src='/res/'.$resourceData['type'].'/'.$resourceData['subType'].'/';
  120.         if(isset($describerData['configFile'])) $src.=$describerData['configFile'];
  121.         elseif (is_file($tmp=cfAppDocRoot().'/res/'.$resourceData['type'].'/'.$resourceData['subType'].'/config.php')) $src.=$tmp;
  122.         else $src.=cfAppDocRoot().'/res/'.$resourceData['type'].'/'.$resourceData['subType'].'/index.php';
  123.  
  124.         // Build args
  125.         $args=array('standaloneConfig'=>1,'resourceConfigFilename'=>$fileName,'resourceConfigScript'=>true);
  126.         if(isset($_GET['weezoKey'])) $args['weezoKey']=$_GET['weezoKey'];
  127.         if(@$describerData['configStartsSession']) $args['configStartsSession']='true';
  128.         if(count($args)) $src.='?'.http_build_query($args,null,'&');
  129.  
  130.         // Redirect
  131.         header('Location: '.$src);
  132.         exit;
  133.     }
  134.  
  135.     /**************************************************************************************************
  136.      * COMMON POST COMMANDS
  137.      **************************************************************************************************/
  138.  
  139.     // Async thumbnails cleaning
  140.     if(isset($_POST['clearThumbnails'])){
  141.         // Unlink thumbnails
  142.         rcThumbnailsClear();
  143.  
  144.         // Return response
  145.         cfAsyncHeader();
  146.         echo cfAsyncXMLJSaction('maskHide()');
  147.         echo cfAsyncFooter();
  148.         exit;
  149.     }
  150.  
  151.  
  152. /**************************************************************************************************
  153.  * Insert HTML wrapping (If standaloneConfig is not set to "true" in describer file)
  154.  **************************************************************************************************/
  155.     if(cfIsInApp() && !$standaloneConfig && !cfIsAsync()){
  156.         ob_start(); // Buffer page for smoother display
  157.  
  158.         cfInsertHEAD(false);
  159.         ?>
  160. <script type="text/javascript">
  161. document.onmousemove=function(event){
  162.     return (W.event && W.event.srcElement && (W.event.srcElement.tagName=='INPUT'||W.event.srcElement.tagName=='TEXTAREA'));
  163. }
  164. </script>
  165. </head>
  166.         <?php
  167.  
  168.         // Insert body with attributes preventing text selection and right-click menu
  169.         echo '<body style="cursor:default;padding-top:0;margin-top:0;margin-bottom:0;overflow:auto">';
  170.         if(!cfGGetVar('UIDebug')) echo '<script type="text/javascript">function onrightclick(e){return false}</script>';
  171.  
  172.         // Drag'n drop scripts
  173.         echo cfScriptLink('wz_dragdrop.js'); // disable text selection (don't kno why...)
  174.         echo '<form style="position:absolute;top:-100px" name="deselForm"><input type="text" name="desel" value="a">a</input></form>';
  175.     }
  176.  
  177.     // Remote administration configuration
  178.     if(!cfIsInApp() && !$standaloneConfig){
  179.         echo outDivFrame('frame1');
  180.         echo outFrameHeaderTable('frame1Header','<img alt="" class="ico" src="'.outResourceIcon($resourceData['type'], $resourceData['subType']).'" style="vertical-align:middle; margin-right:0.5em;">'.cfCaption('adminResourceConfiguration', cfUTF8Encode($resourceData['name'])),outButton(cfCaption('genDelete'),'javascript:deleteRes()',outIcon('del')));
  181.     }
  182.     elseif(cfIsInApp() && !$standaloneConfig && !cfIsAsync()) {
  183.         echo '<div class="frame1">';
  184.     }
  185.  
  186.     //
  187.     // include configuration php script
  188.     //
  189.     $includedByResourceConfig=true;
  190.     $limitedConfig=false;
  191.     // If configuration scripts starts session by itself, close current session
  192.     if($configStartsSession) {wSession_write_close(); /*unset($_SESSION);*/}
  193.  
  194.  
  195.     // If async update, don't send generated page to output: buffer response then discard it
  196.     // Remote admin sets rcFalseAsyncResponse to prevent this as it catches sync response to asynchronously put it in html node
  197.     if(cfIsAsync() && !isset($_ENV['rcFalseAsyncResponse'])) ob_start();
  198.  
  199.     // Includes
  200.     require_once(INCLUDE_DIR.'resourceConfigFunctions.php');
  201.     require_once(INCLUDE_DIR.'outputFunctions.php');
  202.  
  203.     // Include configuration script
  204.     set_include_path(get_include_path().PATH_SEPARATOR.str_replace('/','\\',cfAppDocRoot()).'\\'.$resourceData['type'].'\\'.$resourceData['subType']);
  205.     if(isset($describerData['configFile']))
  206.         $inc=@include_once('../../'.$resourceData['type'].'/'.$resourceData['subType'].'/'.$describerData['configFile']);
  207.     else
  208.         $inc=@include_once('../../'.$resourceData['type'].'/'.$resourceData['subType'].'/config.php');
  209.  
  210.     // No configuration file: display only name configuration control
  211.     if($inc===false){
  212.         rcInsertScriptAndForm();
  213.  
  214.         $limitedConfig=rcConfigRights();
  215.         if($limitedConfig) rcInitLimitedConfig();
  216.  
  217.         // Resource icon & name
  218.         if(!$limitedConfig){rcInsertIconName($resourceData); echo '<br/>';}
  219.         echo '<div style="font-weight:bold;margin-top:16em;margin-bottom:16em;text-align:center">'.cfCaption('resNoConfigNoFile').'</div>';
  220.         // Save / cancel buttons
  221.         echo rcButtonSaveCancel();
  222.         echo '</form>';
  223.         // Save parameters
  224.         rcWriteResourceFile($resourceData, $fileName);
  225.     }
  226.  
  227.     // Asynchronous resource update
  228.     if(cfIsAsync() && !isset($_ENV['rcFalseAsyncResponse'])){
  229.         ob_clean();
  230.         cfAsyncHeader();
  231.         if(isset($_ENV['rcAsyncResponse'])) echo $_ENV['rcAsyncResponse'];
  232.         echo cfAsyncFooter();
  233.     }
  234.  
  235.     // Close HTML stuff
  236.     if(!$standaloneConfig && !cfIsAsync()){
  237.         echo '</div>';
  238.         if(cfIsInApp()) {
  239.             if(cfGGetVar('UIDebug')) echo '<textarea style="width:100%">'.cfRGetVar('id')."\n".str_replace('/','\\',$_ENV['resourceDirectory'])."\n\n".cfHostName().$_SERVER['REQUEST_URI'].'</textarea>';
  240.             //echo cfDragRegisterItems(false);
  241.             echo '</BODY></HTML>'."\n";
  242.             ob_end_flush();
  243.         }
  244.         elseif(!cfIsInApp()) echo '</div>'."\n";
  245.     }
  246. }
  247. ?>